ObjectWindows Copyright (c) 1996 Borland International Title: TOOLTIP Example Keywords: TTooltip;Common control TTooltip, An Introduction ========================= The TTooltip class encapsulates a tooltip control - a small pop-up window that displays a single line of descriptive text giving the purpose of tools in an application. The tools is either a window, such as a child window or control, or an application-defined rectangular area within a window's client area. The tooltip control appears only when the user puts the cursor on a tool and leaves it there for approximately one-half second. The tooltip control appears near the cursor and disappears when the user clicks a mouse button or move the cursor off the tool. Creating a TTooltip Object ========================== The TTooltip class offers two constructor: one for creating a brand new tooltip control and one for aliasing an existing control. The following code fragment illustrates how to create a tooltip control. void TMyWindow::SetupWindow() { TWindow::SetupWindow(); tooltip = new TTooltip(this); tooltip->Create(); } Specifying Tools to the tooltip Control ======================================= Once you created a tooltip, you must specify the tools for which the control must display a descriptive message. To add a new tool you must first fill a TToolInfo which describes the tool. Each tool must have a integer which uniquely identifies that tool. For example, the following code designates a rectangular area of a window as a tool. void TMyWindow::AddTopLeftTool() { uint toolId = ID_TOPLEFT_TOOL; // Tool ID TRect rect(0, 0, 20, 20); // Tool Rectangle TToolInfo ti(this, rect, ID_TOPLEFT_TOOL); tooltip->AddTool(ti); } Providing the Tooltip Text ========================== When adding a tool you may provide the text to be used when describing the tool as the last parameter to the constructor of the TToolInfo structure. For example, TToolInfo ti(this, rect, ID_TOPLEFT_TOOL, "Top Left"); tooltip->AddTool(ti); However, you may opt to provide the text on demand. This allows you to customize the message display to the user. The EV_TTN_NEEDTEXT macro allow you to specify a member function which can provide the text at runtime. The following code snippet illustrates: class TMyWindow : public TWindow { // // Additional definition ommitted for clarity // protected: void HandleTooltipText(TTooltipText& tiTxt); }; DEFINE_RESPONSE_TABLE1(TMyWindow, TWindow) EV_TTN_NEEDTEXT(ID_TOPLEFT_TOOL, HandleTooltipText), END_RESPONSE_TABLE; void TMyWindow::HandleTooltipText(TTooltipText& tiTxt) { tiTxt.CopyText("Top Left square"); } Additional Information ====================== 1. The notification handler of the ObjectWindows TDecoratedFrame class enhances the mechanism for specifying the tooltip text by sending a 'TTooltipEnabler' up the command chain. This allows the 'context' window to provide the text even if it did not setup the tool. For example, a grid control in focus can customize the cut, paste and copy tools to specify the data type being manipulated. ['copy cell' instead of just 'copy']. 2. The EvCommandEnable handler of TDecoratedFrame attempts to provide the tooltip text by looking in two locations: (a) First the window's menu is scanned for a menuitem with an id corresponding to that of the tool. If found, the menustring is provided. (b) Next, TDecoratedFrame attempts to load a string resource with an id corresponding to that of the tool. If found, the string is scanned for a line-feed character. If successful, TDecoratedFrame provides the string following the line-feed as tooltip text. NOTE: You should structure you hint text string using the following format: \n